function checkDate (form) {
	var dateFormat = "{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])" ;
	if (form.lieferung.checked && !form.lieferdatum.value.match(dateFormat)) {
    	form.lieferdatum.focus();
    	form.lieferdatum.hasError = true;
    	return false;
	}
	return true;
	//TODO: checkDate geht nicht
}

function checkLieferung (form) {
	if ($('#comboboxKunde_input').val().length != 0) {
		form.lieferung.disabled = false;

		if (form.lieferung.checked) {
	    	form.lieferdatum.disabled = false;
	    	form.montage.disabled = false;
	    	if (document.getElementsByName("status")[0]) {
	    		form.status.disabled = false;
	    	}
		} else {
			form.lieferdatum.disabled = true;
	    	form.montage.disabled = true;
	    	if (document.getElementsByName("status")[0]) {
	    		form.status.disabled = true;
	    	}
		}
	} else {
		form.lieferung.disabled = true;
	}
}

function chooseTyp(form) {
	$.ajax({
		type: "POST",
		url: "inc/ajax_kunde.php",
		data: { kundentyp: form.value }
	}).done(function( msg ) {
		$('.liste').remove();
		$('#content').append(msg);
	});
}

function chooseVorlage(form) {
	$.ajax({
		type: "POST",
		url: "inc/ajax_vorlage.php",
		data: { vorlagentyp: form.value }
	}).done(function( msg ) {
		$('.liste').remove();
		$('#content').append(msg);
	});
}

function postKundeAngebot() {
	$.ajax({
		type: "POST",
		url: "inc/ajax_angebotkunde.php",
		data: { kundeid: document.getElementById("detailsButton").angebotKunde.value }
	}).done(function( msg ) {
		$('.liste').remove();
		$('#content').append(msg);
	});
}

function postKundeAuftrag() {
	$.ajax({
		type: "POST",
		url: "inc/ajax_auftragkunde.php",
		data: { kundeid: document.getElementById("detailsButton").auftragKunde.value }
	}).done(function( msg ) {
		$('.liste').remove();
		$('#content').append(msg);
	});
}

function postKundeRechnung() {
	$.ajax({
		type: "POST",
		url: "inc/ajax_rechnungkunde.php",
		data: { kundeid: document.getElementById("detailsButton").rechnungKunde.value }
	}).done(function( msg ) {
		$('.liste').remove();
		$('#content').append(msg);
	});
}

function postKundeKundenanfrage() {
	$.ajax({
		type: "POST",
		url: "inc/ajax_kundenanfragekunde.php",
		data: { kundeid: document.getElementById("detailsButton").kundenanfrageKunde.value }
	}).done(function( msg ) {
		$('.liste').remove();
		$('#content').append(msg);
	});
}

function ersetzeDoubleQuotes () {
	document.getElementById('text').value = document.getElementById('text').value.replace(/\"/, "\'");
}

function checkAbonnent (form) {
	if ($('#email').val().length == 0) {
    	form.abonnent.disabled = true;
    	$('#abonnent').removeAttr('checked');
	} else {
    	form.abonnent.disabled = false;
	}
}

function kontaktdaten() {
	if($('#email').val().length == 0 && $('#email').val().length == 0) {
		$('#email').attr("required", "required");
		$('#telefon').attr("required", "required");
	} 

	if($('#email').val().length != 0) {
		$('#telefon').removeAttr('required');
	}

	else if($('#telefon').val().length != 0) {
		$('#email').removeAttr('required');
	}
}

function addComboboxArtikel () {
	document.getElementById('ul_artikel').style.visibility = 'visible';

	$.ajax({
		type: "POST",
		url: "inc/ajax_artikel.php",
		data: { artikelname: document.getElementById('comboboxArtikel_input').value, artikelid: document.getElementById('comboboxArtikel').value }
	}).done(function( msg ) {
		if (!$('#ul_artikel').html().match(document.getElementById('comboboxArtikel_input').value)) {
			$('#ul_artikel').append( msg );
			$('#comboboxArtikel_input').removeAttr( 'required' );
		}
		document.getElementById('comboboxArtikel_input').value = "";
	});
}

function setRequiredArtikel () {
	if (!$('#ul_artikel').html().match( 'li' )) {
		$("#comboboxArtikel_input").attr( "required", "required" );
	}
}

function minArtikel () {
	if (!$('#ul_artikel').html().match( 'li' )) {
		$("#comboboxArtikel_input").focus();
		$("#comboboxArtikel_input").val("");
		return false;
	} else {
		return true;
	}
}

(function( $ ) {
	$.widget( "custom.combobox", {
		_create: function() {
			this.wrapper = $( "<span>" )
				.addClass( "custom-combobox" )
				.insertAfter( this.element );

			this.element.hide();
			this._createAutocomplete();
		},

		_createAutocomplete: function() {
			var selected = this.element.children( ":selected" ),
				value = selected.val() ? selected.text() : "";

			this.input = $( "<input>" )
				.appendTo( this.wrapper )
				.val( value )
				.attr( "title", "" )
				.attr( "name", this.element[0].id+'_input' )
				.attr( "id", this.element[0].id+'_input' )
				.attr( "required", "required" )
				.attr( "placeholder", "Name" )
				.autocomplete({
					delay: 0,
					minLength: 0,
					source: $.proxy( this, "_source" )
				})
				.tooltip({
					tooltipClass: "ui-state-highlight"
				});

			this._on( this.input, {
				autocompleteselect: function( event, ui ) {
					ui.item.option.selected = true;
					this._trigger( "select", event, {
						item: ui.item.option
					});
				},

				autocompletechange: "_removeIfInvalid"
			});
		},

		_source: function( request, response ) {
			var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" );
			response( this.element.children( "option" ).map(function() {
				var text = $( this ).text();
				if ( this.value && ( !request.term || matcher.test(text) ) )
					return {
						label: text,
						value: text,
						option: this
					};
			}) );
		},

		_removeIfInvalid: function( event, ui ) {

			// Selected an item, nothing to do
			if ( ui.item ) {
				return;
			}

			// Search for a match (case-insensitive)
			var value = this.input.val(),
				valueLowerCase = value.toLowerCase(),
				valid = false;
			this.element.children( "option" ).each(function() {
				if ( $( this ).text().toLowerCase() === valueLowerCase ) {
					this.selected = valid = true;
					return false;
				}
			});

			// Found a match, nothing to do
			if ( valid ) {
				return;
			}

			// Remove invalid value
			this.input.val( "" );
			this.element.val( "" );
			this.input.autocomplete( "instance" ).term = "";
		},

		_destroy: function() {
			this.wrapper.remove();
			this.element.show();
		}
	});
})( jQuery );

$(function() {
    $( "#comboboxArtikel, #comboboxKunde, #comboboxMitarbeiter" ).combobox();
	if (!$(location).attr('href').match('auftraege|kundenanfragen|feedback')) {
		$( '#comboboxKunde_input' ).removeAttr( 'required' );
	}
});



// JS Funktionen für FEEDBACK Analyse Tortendiagramm
function drawDiagramm(){
	document.getElementById('myChart').getContext('2d').clearRect(0,0,400,400);
	$('.elementlegende').remove();
	initPie();

// Global definierte Variablen
var fps = 30; // frames per second
var animationSpeed = 200; // je kleiner, desto schneller
var radius = 400; // Radius der Torte in Pixeln
var werte = new Array(); 
var beschriftung = new Array();
var colors = ["#0064B4","#48822A","#EDA91B","#C2382F","#AE81FF"]

// Deklarationen
var wdh = 0; // Animationsdurchläufe
var total = 0;
var counter = 0; // Zählvariable der Tortenstücke
var scale = 0;
var startwinkel = 0;
var endwinkel = 0;


function initPie() {  
	var json = new Array();
  context = document.getElementById("myChart").getContext('2d');
  $.ajax({
		type: "POST",
		url: "inc/ajax_auswerten.php",
		data: { von: document.getElementById('von_datum').value, bis: document.getElementById('bis_datum').value }
	}).done(function( msg ) {
		//alert(msg);
		json = $.parseJSON(msg);
		if(json==null) return;
		document.getElementById('legende').style.visibility = "visible";
		for(var y=0; y<json.length; y++){
			werte[y] = parseInt(json[y].anzahl);
			beschriftung[y] = json[y].bezeichnung;
		}
  // Summe aller Werte berechnen
  for (var z=0; z < werte.length; z++) {
   total += parseInt(werte [z]);
  } 
  startAnimation();
	});

}


function drawPie  () {    
  // einen neuen Pfad initialisieren
  context.beginPath();
  // Startposition festlegen 
  context.moveTo(200, 150);
    
  // Summe bisher gezeichneter Segmente
      summe = 0;
      for (var j=0; j <= counter; j++) {
         summe += werte [j];
      }

    startwinkel = toRad((summe - werte[counter]) / total * 360);
    endwinkel = toRad(summe  / total * 360);
    aktuellerwinkel = startwinkel + (endwinkel - startwinkel) * scale;

  
  context.arc(200, 150, 100, startwinkel, aktuellerwinkel, false);
  context.closePath();

  context.fillStyle = colors[counter];
  context.fill();
  
}


function looptime () {
  wdh++;
    scale = wdh / animationSpeed *  total / werte[counter];

       // Ende?
       if(scale >= 1) {
       drawPie(); // Animation ein letztes Mal durchführen
           scale = 0; // Am Ende zurücksetzen
       wdh = 0;
           clearInterval(timer); // Schleife abbrechen
       showLegend(); // Legende anzeigen
       counter++; // Segmentzähler hochzählen
       
       // gibt es noch weitere Segmente zum Darstellen?
      if (counter < werte.length){
        startAnimation () 
      }   
      } else {
        drawPie();
    }
}


function startAnimation() {
      timer = setInterval(looptime, 1000 / fps );
}
   

function showLegend () {
  strCode = "<tr class='elementlegende'><td style='width: 25px; background-color:"+colors[counter]+"'></td><td>"+beschriftung[counter]+"</td><td> "+werte[counter]+"</td></tr>";
  document.getElementById('legende').innerHTML += strCode;
}

// Umrechung Grad -> Radiant
function toRad (x) {
  return (x*Math.PI)/180; 
}
}